home *** CD-ROM | disk | FTP | other *** search
/ Turnbull China Bikeride / Turnbull China Bikeride - Disc 1.iso / ARGONET / PD / SOUND / AUDIOVISUAL.ZIP / !AudioVis / !RunImage (.txt) < prev    next >
RISC OS BBC BASIC V Source  |  1997-05-10  |  12KB  |  509 lines

  1.  "AudioVis by Michael K
  2. bel & Denys Bogatz" 
  3.  "Wimp Interface written by Dirk Krumbholz"
  4. $+" ("+
  5. _InitVars
  6. _EnterWimp
  7. _LeaveWimp:
  8. $+" ("+
  9. _InitApp
  10.  "WimpExt_PrePoll"
  11.  "Wimp_Poll",%11100000110001,block% 
  12.  reason%
  13.  "WimpExt_Action",taskhandle%,block%,reason% 
  14.  reason%
  15.  reason% 
  16.  "Wimp_OpenWindow",,block%
  17.  "Wimp_CloseWindow",,block%
  18. _MouseClick(block%!12)
  19.  "Wimp_ProcessKey",block%!24
  20. _MenuSelection(!block%)
  21. 17,18:
  22. _RecieveMessage(block%!16)
  23.  quit%
  24. _LeaveWimp
  25. _MouseClick(window%)
  26.  window% 
  27.  -2 : 
  28. _IconBarClick(block%!8)
  29. _WindowClick(block%!12,block%!16)
  30. _IconBarClick(button%)
  31.  button% 
  32.  2 : 
  33.  "WimpExt_CreateMenu",,imenu%,!block%-64,228
  34.          menuopen%=imenu%
  35.  4 : 
  36. _StartVisualisation
  37. _WindowClick(window%,icon%)
  38.  window%<>optwin% 
  39.  icon% 
  40.  4 : 
  41. _Opt_Initialise
  42.          
  43. _Opt_UpdateAll
  44. 3:         !block%=optwin%:
  45.  "Wimp_CloseWindow",,block%
  46.  5 : 
  47. _Opt_GetValues
  48.          
  49. _Opt_Save
  50. 6:         !block%=optwin%:
  51.  "Wimp_CloseWindow",,block%
  52.  6 : !block%=optwin%:
  53.  "Wimp_CloseWindow",,block%
  54.  7 : 
  55. _Opt_GetValues
  56. 9:         !block%=optwin%:
  57.  "Wimp_CloseWindow",,block%
  58. _MenuSelection(menuItem%)
  59.  menuItem% 
  60.  1 : !block%=optwin%
  61. @-         
  62.  "Wimp_GetWindowState",,block%
  63. A0         
  64.  "WimpExt_CentreWindow",,block%+4
  65. B1         
  66.  "WimpExt_CentreWindowV",,block%+4
  67.          block%!28=-1
  68. D)         
  69.  "Wimp_OpenWindow",,block%
  70.  2 : quit%=
  71. _RecieveMessage(action%)
  72.  action% 
  73.  0 : quit%=
  74.  3 : 
  75.  block%!20 = optwin% 
  76. M           
  77.  block%!24 = 17 
  78.            P%=block%+44
  79. O'           
  80.  ?P%<>0:P%+=1:
  81. :?P%=13
  82. P*           OPTsprsetname$=$(block%+44)
  83. Q%           
  84. _Opt_UpdateSprSetName
  85.           
  86.          
  87. _Opt_Initialise
  88. OPTplotchoice%=1
  89. OPTviewchoice%=0
  90. OPTbuffercolor%=159
  91. OPTsprset%=1
  92. OPTsprsetname$=""
  93. _Opt_Save
  94. P%=block%:L%=P%+2048
  95. [ OPT 10
  96. equd OPTplotchoice%
  97. equd OPTviewchoice%
  98. equd OPTbuffercolor%
  99. equd OPTsprset%
  100. equs OPTsprsetname$
  101. equb 13
  102.  "OS_File",10,"<AudioVis$Dir>.Choices",&ffd,,block%,block%+16+1+
  103. (OPTsprsetname$)
  104. _Opt_Load
  105.  "OS_Find",%01000111,"<AudioVis$Dir>.Choices" 
  106.  F%=0 
  107. _Opt_Initialise
  108.  "OS_Find",0,F%
  109.  "OS_File",16,"<AudioVis$Dir>.Choices",block%,0
  110.  OPTplotchoice%=!block%
  111.  OPTviewchoice%=block%!4
  112.  OPTbuffercolor%=block%!8
  113.  OPTsprset%=block%!12
  114. w  OPTsprsetname$=$(block%+16)
  115. _Opt_UpdateAll
  116.  "WimpExt_SetIcon",,,optwin%,20,OPTplotchoice%
  117.  "WimpExt_SetIcon",,,optwin%,21+OPTviewchoice%,1
  118.  "WimpExt_SetIconString",,,optwin%,23,
  119.  OPTbuffercolor%
  120.  "WimpExt_SetIcon",,,optwin%,9+OPTsprset%,1
  121.  "WimpExt_SetIconString",,,optwin%,17,OPTsprsetname$
  122. _Opt_UpdateSprSetName
  123.  "WimpExt_SetIcon",,,optwin%,16,1
  124.  "WimpExt_SetIconString",,,optwin%,17,OPTsprsetname$
  125. _Opt_GetValues
  126.  "WimpExt_GetIcon",,,optwin%,20 
  127.  OPTplotchoice%
  128.  "WimpExt_GetIcon",,,optwin%,22 
  129.  OPTviewchoice%
  130.  "WimpExt_GetNumberIcon",10,,optwin%,23 
  131.  OPTbuffercolor%
  132. 'OPTbuffercolor%=OPTbuffercolor%
  133.  "Wimp_WhichIcon",optwin%,block%,&003f0000,&00210000
  134. OPTsprset%=!block%-9
  135. _InitVars
  136.  code% (600*1024)
  137.  block% 2048
  138.  idata% 2048
  139.  imenu% 100
  140. quit%=
  141.  optspritearea% 50175
  142. -!optspritearea%=50172:optspritearea%!8=16
  143.  "OS_SpriteOp",&109,optspritearea%
  144.  "OS_SpriteOp",&10a,optspritearea%,"<AudioVis$Dir>.Sprites"
  145. _InitApp
  146. _Opt_Load
  147. _Opt_UpdateAll
  148. _EnterWimp
  149. P%=block%:L%=P%+8
  150. [ OPT 10
  151. equd 3:equd 0
  152.  "Wimp_Initialise",300,&4b534154,"AudioVis",block% 
  153.  ,taskhandle%
  154.  "WimpExt_Initialise",14,taskhandle%,%1100010010
  155.  "WimpExt_IconBarSprite",,,-1,"!audiovis",,3
  156. block%!0=0:block%!4=0
  157.  "WimpExt_LoadTemplates",block%,block%+64,idata%,idata%+2047,-1,"<AudioVis$Dir>.Templates",optspritearea%
  158. %infowin%=!block%:optwin%=block%!4
  159. P%=imenu%:L%=P%+100
  160. [ OPT 10
  161. @equs "AudioVis":equd 0:equd &00070207:equd 96:equd 44:equd 0
  162. @equd 0:equd infowin%:equd &7000021:equs "Info":equd 0:equd 0
  163. 7equd 0:equd -1:equd &7000021:equs "Options
  164. ":equd 0
  165. <equd &80:equd -1:equd &7000021:equs "Quit":equd 0:equd 0
  166. _LeaveWimp
  167.  "WimpExt_CloseDown",taskhandle%
  168.  "Wimp_CloseDown"
  169. _StartVisualisation
  170. BufferColor=OPTbuffercolor%
  171. PlotChoice=1-OPTplotchoice%
  172. ViewChoice=OPTviewchoice%
  173.  OPTsprset%=7 
  174.  L$=OPTsprsetname$
  175. 7 L$="<AudioVis$Dir>.SpriteSets.sprset"+
  176.  OPTsprset%
  177.  "Wimp_ReadSysInfo",1 
  178.  DesktopScreenMode%
  179. L%=code%+(600*1024)-1
  180. assemble
  181.  "LZWD_Decompress",L$,SPRITES
  182. 4 table%?(S*2)=
  183. ((0.5+267.33*2^(S/16))/512) 
  184. ! table%?(S*2+1)=-table%?(S*2)
  185.  code%
  186.  DesktopScreenMode%
  187.  "Wimp_ForceRedraw",-1,0,0,&7fff,&7fff
  188. assemble
  189.  pass% = 8 
  190. P%=code%
  191. OPT pass%
  192. STMFD R13!,{R0-R12,R14}
  193. BL GSCREEN
  194. BL SSCAN
  195. b  main_loop
  196. ;------------------------
  197. .table%
  198. _work(256):ALIGN
  199. .OSTSET:EQUD 320*256
  200. EQUW 0:EQUB 0
  201. .SBASE
  202. EQUB 2
  203. EQUD 0
  204.     ALIGN
  205. ;------------------------
  206. .main_loop
  207. MOV R0,#19:SWI 6
  208. !MOV R0,#22:ADR R1,SBASE:SWI 7
  209. LDR R3,OSTSET
  210. LDR R2,SBASE+1
  211.  R2,R2,R3
  212. STR R2,SBASE+1
  213. STR R2,SCREEN+4
  214. BL  LOESCHBILD
  215. MOV R4,#0
  216. LDR R1,BASIS
  217. LDR R2,SBLOCK
  218. ADR R12,table%
  219. MOV  R6,#0
  220. MOV  R7,#0
  221. MOV  R8,#0
  222. MOV  R9,#0
  223. .werte_lesen
  224. LDR R10,[R1]
  225.  R3,R10,#&FF
  226. LDRB R3,[R12,R3]
  227. SUBS  R3,R3,#128
  228. RSBMI R3,R3,#0
  229. CMP   R3,R6
  230. MOVGT R6,R3
  231.  R3,R10,#&FF00
  232. LDRB R3,[R12,R3,LSR#8]
  233. SUBS  R3,R3,#128
  234. RSBMI R3,R3,#0
  235. CMP   R3,R7
  236. MOVGT R7,R3
  237.  R3,R10,#&FF0000 
  238. LDRB R3,[R12,R3,LSR#16]
  239. SUBS  R3,R3,#128
  240. RSBMI R3,R3,#0
  241. CMP   R3,R8
  242. MOVGT R8,R3
  243. MOV R3,R10,lsr#24
  244. LDRB R3,[R12,R3]
  245. SUBS  R3,R3,#128
  246. RSBMI R3,R3,#0
  247. CMP   R3,R9
  248. MOVGT R9,R3
  249. ADD R4,R4,#1
  250. CMP R4,#128
  251. BNE werte_lesen
  252. STR R6,wert_erste
  253. STR R7,wert_zweite
  254. STR R8,wert_dritte
  255. STR R9,wert_vierte
  256. LDR R0,SCREEN
  257. LDR R1,SCREEN+4
  258. ADD r0,r1,r0
  259. ADD R0,R0,#32
  260. ADR R1,SPRITES
  261. LDR R3,wert_erste
  262. MOV R3,R3,lSR#2
  263. ADD R1,R1,R3,lSL#14
  264. MOV R2,#128
  265. .plotloop1
  266. LDMIA R1!,{R3-R12,R14}
  267. STMIA R0!,{R3-R12,R14}
  268. LDMIA R1!,{R3-R12,R14}
  269. STMIA R0!,{R3-R12,R14}
  270. LDMIA R1!,{R3-R12}
  271. STMIA R0!,{R3-R12}
  272. ADD R0,R0,#192
  273. SUBS R2,R2,#1            
  274. BGT plotloop1
  275. LDR R0,SCREEN
  276. LDR R1,SCREEN+4
  277. ADD r0,r1,r0
  278. ADD R0,R0,#160
  279. ADR R1,SPRITES
  280. LDR R3,wert_zweite
  281. MOV R3,R3,lSR#2
  282. ADD R1,R1,R3,lsl#14
  283. MOV R2,#128
  284. .plotloop2
  285. LDMIA R1!,{R3-R12,R14}
  286. STMIA R0!,{R3-R12,R14}
  287. LDMIA R1!,{R3-R12,R14}
  288. STMIA R0!,{R3-R12,R14}
  289. LDMIA R1!,{R3-R12}
  290. STMIA R0!,{R3-R12}
  291. ADD R0,R0,#192
  292. SUBS R2,R2,#1
  293. BGT plotloop2
  294. LDR R0,SCREEN
  295. LDR R1,SCREEN+4
  296. ADD r0,r1,r0
  297. ADD R0,R0,#(320*128)
  298. ADD R0,R0,#32
  299. ADR R1,SPRITES
  300. LDR R3,wert_dritte
  301. MOV R3,R3,lSR#2
  302. ADD R1,R1,R3,lsl#14
  303. MOV R2,#128
  304. .plotloop3
  305. LDMIA R1!,{R3-R12,R14}
  306. STMIA R0!,{R3-R12,R14}
  307. LDMIA R1!,{R3-R12,R14}
  308. STMIA R0!,{R3-R12,R14}
  309. LDMIA R1!,{R3-R12}
  310. STMIA R0!,{R3-R12}
  311. ADD R0,R0,#192
  312. SUBS R2,R2,#1
  313. BGT plotloop3
  314. .vierte
  315. LDR R0,SCREEN
  316. LDR R1,SCREEN+4
  317. ADD r0,r1,r0
  318. ADD R0,R0,#(320*128)      
  319. ADD R0,R0,#160
  320. ADR R1,SPRITES
  321. LDR R3,wert_vierte
  322. MOV R3,R3,lSR#2
  323. ADD R1,R1,R3,lsl#14
  324. MOV R2,#128
  325. .plotloop4
  326. LDMIA R1!,{R3-R12,R14}
  327. STMIA R0!,{R3-R12,R14}
  328. LDMIA R1!,{R3-R12,R14}
  329. STMIA R0!,{R3-R12,R14}
  330. LDMIA R1!,{R3-R12}
  331. STMIA R0!,{R3-R12}
  332. ADD R0,R0,#192
  333. SUBS R2,R2,#1
  334. BGT plotloop4
  335. MOV R0,#0
  336. CMP R0,#(PlotChoice)
  337. BNE tastendruck
  338. LDR R0,SCREEN
  339. LDR R1,SCREEN+4
  340. ADD r0,r1,r0
  341. MOV R4,#0
  342. LDR R1,BASIS
  343. LDR R2,SBLOCK
  344. MOV R5,#(BufferColor)
  345. ADR R12,table%
  346. MOV R10,#0
  347. CMP R10,#(ViewChoice)  
  348. BNE plot_buffer_sideways
  349. .plot_buffer_above
  350. LDR  R10,[R1]      
  351.   R3,R10,#&FF
  352. LDRB R3,[R12,R3]
  353. MOV  R3,R3,LSR#2
  354. MOV  R6,R3,LSL#8
  355. ADD  R6,R6,R3,LSL#6
  356. ADD  R6,R6,#(32*320)
  357. ADD  R6,R6,#32
  358. STRB R5,[R0,R6]
  359.   R3,R10,#&FF00
  360. LDRB R3,[R12,R3,LSR#8]
  361. MOV  R3,R3,LSR#2
  362. MOV  R6,R3,LSL#8
  363. ADD  R6,R6,R3,LSL#6
  364. ADD  R6,R6,#(32*320)
  365. ADD  R6,R6,#160
  366. STRB R5,[R0,R6]
  367.   R3,R10,#&FF0000
  368. LDRB R3,[R12,R3,LSR#16]
  369. MOV  R3,R3,LSR#2
  370. MOV  R6,R3,LSL#8
  371. ADD  R6,R6,R3,LSL#6
  372. ADD  R6,R6,#(160*320)
  373. ADD  R6,R6,#32
  374. STRB R5,[R0,R6]
  375. MOV  R3,R10,lsr#24
  376. LDRB R3,[R12,R3]
  377. MOV  R3,R3,LSR#2
  378. MOV  R6,R3,LSL#8
  379. ADD  R6,R6,R3,LSL#6
  380. ADD  R6,R6,#(160)*320
  381. ADD  R6,R6,#160
  382. STRB R5,[R0,R6]
  383. ADD  R1,R1,R2
  384. ADD R0,R0,#1
  385. ADD R4,R4,#1
  386. CMP R4,#128
  387. BNE plot_buffer_above
  388. B tastendruck
  389. .plot_buffer_sideways
  390. LDR  R10,[R1]      
  391.   R3,R10,#&FF
  392. LDRB R3,[R12,R3]
  393. MOV  R3,R3,LSR#3
  394. STRB R5,[R0,R3]
  395.   R3,R10,#&FF00
  396. LDRB R3,[R12,R3,LSR#8]
  397. MOV  R3,R3,LSR#3
  398. ADD  R3,R3,#288
  399. STRB R5,[R0,R3]
  400.   R3,R10,#&FF0000
  401. LDRB R3,[R12,R3,LSR#16]
  402. MOV  R3,R3,LSR#3
  403. ADD  R3,R3,#(320*128)
  404. STRB R5,[R0,R3]
  405. MOV  R3,R10,lsr#24
  406. LDRB R3,[R12,R3]
  407. MOV  R3,R3,LSR#3
  408. ADD  R3,R3,#(320*128)
  409. ADD  R3,R3,#288
  410. STRB R5,[R0,R3]
  411. ADD  R1,R1,R2
  412. ADD R0,R0,#320
  413. ADD R4,R4,#1
  414. CMP R4,#128
  415. BNE plot_buffer_sideways
  416. .tastendruck
  417. MOV R0,#121:MOV R1,#112+128
  418. SWI 6:CMP R1,#&FF:BEQ RAUS
  419. B main_loop
  420.     .RAUS
  421. LDMFD R13!,{R0-R12,PC}
  422. (;-----------------------------------
  423. .wert_erste
  424. EQUD 0
  425. .wert_zweite
  426. EQUD 0
  427. .wert_dritte
  428. EQUD 0
  429. .wert_vierte
  430. EQUD 0
  431. (;-----------------------------------
  432. .LOESCHBILD
  433. 5MOV R0,#0:MOV R1,R0:MOV R2,R0:MOV R3,R0:MOV R4,R0
  434. !MOV R5,R0:MOV R6,R0:MOV R7,R0
  435. LDR R10,SCREEN
  436. LDR R11,SCREEN+4
  437. ADD r10,r10,r11
  438. MOV R11,#255
  439. .LOESCHBILD_LOOP
  440. STMIA R10!,{R0-R7}
  441. ADD   R10,R10,#256
  442. STMIA R10!,{R0-R7}
  443. SUBS  R11,R11,#1
  444. BPL   LOESCHBILD_LOOP
  445. MOV   PC,R14
  446. (;-----------------------------------
  447. .GSCREEN
  448. ADR R0,GSCRTAB
  449. ADR R1,SCREEN
  450. SWI "OS_ReadVduVariables"
  451. LDR R0,SCREEN
  452. MOV PC,R14
  453. .GSCRTAB
  454. EQUD 148
  455. EQUD -1
  456. .SCREEN
  457. EQUD 0
  458. EQUD 0
  459. (;-----------------------------------
  460.     .SSCAN
  461.     STMFD R13!,{R0-R12,R14}
  462.     MOV R0,#0
  463.     MOV R1,#0
  464.     MOV R2,#0
  465.     MOV R3,#0
  466.     MOV R4,#0
  467.     SWI "Sound_Configure"
  468.     ADR R5,SBLOCK
  469.     STMIA R5,{R0-R4}
  470.     ADR R3,TESTSOUND
  471.     SWI "Sound_Configure"
  472.     MOV R0,#0
  473.     STR R0,TESTVOICE
  474.     .ESLOOP
  475. -C    MOV R0,#121:MOV R1,#112+128:SWI 6:CMP R1,#&FF:BEQ GEHTNICHT
  476.     LDR R9,TESTVOICE
  477.     CMP R9,#0
  478.     BEQ ESLOOP
  479.     .GEHTNICHT
  480.     ADR R5,SBLOCK
  481.     LDMIA R5,{R0-R4}
  482.     SWI "Sound_Configure"
  483.     LDMFD R13!,{R0-R12,PC}
  484. 6,    ;-----------------------------------
  485.     .SBLOCK
  486.     EQUD 0
  487.     EQUD 0
  488.     EQUD 0
  489.     EQUD 0
  490.     EQUD 0
  491. =$    .TESTSOUND:EQUD TESTSOUNDPRG
  492.     EQUD 0
  493.     EQUD 0
  494.     EQUD 0
  495.     .TESTSOUNDPRG
  496.     STR R7,TESTVOICE
  497.     STR R12,BASIS
  498.     MOVS PC,R14
  499.     .TESTVOICE
  500.     EQUD 0
  501.     .BASIS
  502.     EQUD 0
  503. I(;-----------------------------------
  504. .SPRITES
  505. _work(524288):ALIGN
  506. _work(amount)
  507. P%+=amount
  508. O%+=amount
  509.